package cn.com.nes.site.service.crm.customer.bo;

import cn.com.nes.site.entity.bo.BaseBO;
import cn.com.nes.site.entity.em.crm.customer.CustomerLevelEnum;
import cn.com.nes.site.entity.em.crm.customer.CustomerNatureEnum;
import cn.com.nes.site.entity.em.crm.customer.CustomerSaveTypeEnum;
import cn.com.nes.site.entity.em.crm.customer.EnergyTypeEnum;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;


@Data
public class CustomerBO extends BaseBO {

    /**
     * 逻辑字段，是否为新增客户
     */
    private boolean addCustomer = false;

    /**
     * 保存来源：01-商务项目，02-施工项目
     */
    private String saveSource = "01";

    /**
     * 客户UUID，用户主键ID
     */
    private String uuid;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 性别
     */
    private String sex;

    /**
     * 联系人
     */
    private String contact;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 客户性质
     */
    private CustomerNatureEnum customerNature = CustomerNatureEnum._personal;

    /**
     * 业务类型
     */
    private String businessType;

    /**
     * 客户级别
     */
    private CustomerLevelEnum customerLevel = CustomerLevelEnum._level_5;

    /**
     * 行政区划代码
     */
    private String xzqhdm;

    /**
     * 地址
     */
    private String address;

    /**
     * 经度
     */
    private BigDecimal longitude;

    /**
     * 纬度
     */
    private BigDecimal latitude;

    /**
     * 备注
     */
    private String memo;

    // -----------企业信息---------

    /**
     * 企业性质
     */
    private String natureOfCompany;

    /**
     * 公司法人
     */
    private String legalPerson;

    /**
     * 成立时间
     */
    private Date establishmentTime;

    /**
     * 统一信用代码
     */
    private String unifiedcreditCode;

    /**
     * 注册资本
     */
    private BigDecimal registeredCapital;

    /**
     * 业务范围
     */
    private String scopeOfBusiness;

    /**
     * 公司网址
     */
    private String website;

    /**
     * 经销商唯一编码
     */
    private String distributorCode;

    /**
     * 经销商类型
     */
    private String distributorType;

    /**
     * 渠道负责人
     */
    private String channelPerson;

    /**
     * 扩展字段
     */
    private String jsonData;

    /**
     * 模版ID
     */
    private String templateId;

    /**
     * 客户来源，值域对应t_param表 param_type=13
     */
    private String customerSource;

    /**
     * 保存类型：0-全部客户，1-我的客户
     */
    private CustomerSaveTypeEnum saveType;

    /**
     * 上级客户id
     */
    private String superCustomerId;

    /**
     * 计划年份
     */
    private String planYear;

    /**
     * 身份证号码
     */
    private String idCardNumber;

    /**
     * 客户编号
     */
    private String customerCode;

    /**
     * 能源类型
     */
    private EnergyTypeEnum energyType;

    /**
     * 电表号
     */
    private String electricityMeterNumber;

    /**
     * 客户编号-燃气表号
     */
    private String gasMeterNumber;

    /**
     * 用能主体性质编码
     */
    private String energyUsePropertyCode;

    /**
     * 是否本村户籍
     */
    private Boolean isVillagers;

    /**
     * 采暖面积
     */
    private BigDecimal heatingArea;

    /**
     * 建筑面积
     */
    private BigDecimal floorSpace;

    /**
     * 常用采暖面积
     */
    private BigDecimal commonHeatingArea;

    /**
     * 建筑结构
     */
    private String buildingStructure;

    /**
     * 房屋类型
     */
    private Integer buildingType;

    /**
     * 采暖末端
     */
    private Integer heatingEnd;

    /**
     * 供暖方式
     */
    private Integer heatingMode;

    /**
     * 门牌号
     */
    private String houseNumber;

    /** ---- 补充数据项 ----  **/
    /**
     * 身份证正面照片
     */
    private String idCardFrontImage;

    /**
     * 身份证号反面照片
     */
    private String idCardBackImage;


    /**
     * 户口本首页照片
     */
    private String householdRegistrationBookFirstPageImage;

    /**
     * 户口本户主页照片
     */
    private String householdRegistrationBookHomePageImage;

    /**
     * 电费发票照片
     */
    private String electricityInvoiceImage;

    /**
     * 长期居住证明照片
     */
    private String longTermResidenceCertificateImage;

    /**
     * 未享受补贴证明照片
     */
    private String notEnjoySubsidiesCertificateImage;

    /**
     * 特殊情况证明照片
     */
    private String specialCircumstancesCertificateImage;

    /**
     * 是否农村
     */
    private Boolean isVillage;

    /**
     * 建筑层高
     */
    private BigDecimal buildingHeight;

    /**
     * 外墙厚度
     */
    private Integer outerWallThickness;

    /**
     * 外墙保温
     */
    private String outerWallKeepWarm;

    /**
     * 安装位置
     */
    private Integer installPosition;

    /**
     * 房屋用途
     */
    private Integer housePerpose;

    /**
     * 房屋间数
     */
    private BigDecimal roomCount;

    /**
     * 窗户类型
     */
    private Integer windowType;

    /**
     * 房屋朝向
     */
    private Integer houseDirection;

    /**
     * 末端状态
     */
    private Integer endState;

    /**
     * 旧设备与户主合影
     */
    private String jsbyhzhy;
    

    /**
     * 低保户和五保户资格证明
     */
    private String dbhhwbhzm;
    /**
     * 客户名称
     */
    private String customerNameNow;
    /**
     * 客户电话
     */
    private String  phoneNow;
    /**
     * 是否户主
     */
    private String isHouseholder;

    private String idCardNumberNow;

    private String customerStaffId;

    /**
     * 商机id
     */
    private String clueId;

    /**
     * 商城的客户id
     */
    private String merCustomerId;

    public boolean addCustomer() {
        return addCustomer;
    }

    public boolean hasCustomerFile() {
        boolean flag = false;
        if (StrUtil.isNotEmpty(jsbyhzhy)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(specialCircumstancesCertificateImage)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(dbhhwbhzm)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(idCardFrontImage)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(idCardBackImage)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(householdRegistrationBookHomePageImage)) {
            flag = true;
        }
        if (StrUtil.isNotEmpty(householdRegistrationBookFirstPageImage)) {
            flag = true;
        }


        return flag;
    }

}
